package me.thonk.croptopia.registry;

import me.thonk.common.BlockNames;
import me.thonk.croptopia.blocks.CroptopiaCropBlock;
import me.thonk.croptopia.blocks.CroptopiaSaplingBlock;
import me.thonk.croptopia.blocks.TallCropBlock;
import me.thonk.croptopia.generator.CroptopiaSaplingGenerator;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.RotatedPillarBlock;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.level.material.MaterialColor;

import static me.thonk.croptopia.CroptopiaForge.*;

public class BlockRegistry {
    public static Block artichokeCropBlock;
    public static Block asparagusCropBlock;
    public static Block barleyCropBlock;
    public static Block basilCropBlock;
    public static Block bellPepperCropBlock;
    public static Block blackBeanCropBlock;
    public static Block blackberryCropBlock;
    public static Block blueberryCropBlock;
    public static Block broccoliCropBlock;
    public static Block cabbageCropBlock;
    public static Block cantaloupeCropBlock;
    public static Block cauliflowerCropBlock;
    public static Block celeryCropBlock;
    public static Block coffeeCropBlock;
    public static Block cornCropBlock;
    public static Block cranberryCropBlock;
    public static Block cucumberCropBlock;
    public static Block currantCropBlock;
    public static Block eggplantCropBlock;
    public static Block elderberryCropBlock;
    public static Block garlicCropBlock;
    public static Block gingerCropBlock;
    public static Block grapeCropBlock;
    public static Block greenBeanCropBlock;
    public static Block greenOnionCropBlock;
    public static Block honeydewCropBlock;
    public static Block hopsCropBlock;
    public static Block kaleCropBlock;
    public static Block kiwiCropBlock;
    public static Block leekCropBlock;
    public static Block lettuceCropBlock;
    public static Block mustardCropBlock;
    public static Block oatCropBlock;
    public static Block oliveCropBlock;
    public static Block onionCropBlock;
    public static Block peanutCropBlock;
    public static Block chilePepperCropBlock;
    public static Block pineappleCropBlock;
    public static Block radishCropBlock;
    public static Block raspberryCropBlock;
    public static Block rhubarbCropBlock;
    public static Block riceCropBlock;
    public static Block rutabagaCropBlock;
    public static Block saguaroCropBlock;
    public static Block soybeanCropBlock;
    public static Block spinachCropBlock;
    public static Block squashCropBlock;
    public static Block strawberryCropBlock;
    public static Block sweetPotatoCropBlock;
    public static Block tomatilloCropBlock;
    public static Block tomatoCropBlock;
    public static Block turmericCropBlock;
    public static Block turnipCropBlock;
    public static Block yamCropBlock;
    public static Block zucchiniCropBlock;
    public static Block vanillaCropBlock;
    public static Block pepperCropBlock;
    public static Block teaCropBlock;


    // real block
    public static Block salt;
    public static Block cinnamonLog;
    public static Block strippedCinnamonLog;
    public static Block cinnamonWood;
    public static Block strippedCinnamonWood;

    public static Block appleSaplingBlock;
    public static Block bananaSaplingBlock;
    public static Block orangeSaplingBlock;
    public static Block persimmonSaplingBlock;
    public static Block plumSaplingBlock;
    public static Block cherrySaplingBlock;
    public static Block lemonSaplingBlock;
    public static Block grapefruitSaplingBlock;
    public static Block kumquatSaplingBlock;
    public static Block peachSaplingBlock;
    public static Block coconutSaplingBlock;
    public static Block nutmegSaplingBlock;
    public static Block figSaplingBlock;
    public static Block nectarineSaplingBlock;
    public static Block mangoSaplingBlock;
    public static Block dragonFruitSaplingBlock;
    public static Block starFruitSaplingBlock;
    public static Block avocadoSaplingBlock;
    public static Block apricotSaplingBlock;
    public static Block pearSaplingBlock;
    public static Block limeSaplingBlock;
    public static Block dateSaplingBlock;
    public static Block almondSaplingBlock;
    public static Block cashewSaplingBlock;
    public static Block pecanSaplingBlock;
    public static Block walnutSaplingBlock;
    public static Block cinnamonSaplingBlock;

    public static void init() {
        salt = registerBlock(BlockNames.SALT_ORE, new Block(BlockBehaviour.Properties.of(Material.DECORATION).strength(0.5F).sound(SoundType.SAND)));
        cinnamonLog = registerBlock(BlockNames.CINNAMON_LOG, new RotatedPillarBlock(BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.WOOD).sound(SoundType.WOOD).strength(2.0F)));
        strippedCinnamonLog = registerBlock(BlockNames.STRIPPED_CINNAMON_LOG, new RotatedPillarBlock(BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.WOOD).sound(SoundType.WOOD).strength(2.0F)));
        cinnamonWood = registerBlock(BlockNames.CINNAMON_WOOD, new RotatedPillarBlock(BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.WOOD).sound(SoundType.WOOD).strength(2.0F)));
        strippedCinnamonWood = registerBlock(BlockNames.STRIPPED_CINNAMON_WOOD, new RotatedPillarBlock(BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.WOOD).sound(SoundType.WOOD).strength(2.0F)));

        artichokeCropBlock = registerBlock(BlockNames.ARTICHOKE_CROP, new CroptopiaCropBlock(createCropSettings()));
        asparagusCropBlock = registerBlock(BlockNames.ASPARAGUS_CROP, new CroptopiaCropBlock(createCropSettings()));
        barleyCropBlock = registerBlock(BlockNames.BARLEY_CROP, new CroptopiaCropBlock(createCropSettings()));
        basilCropBlock = registerBlock(BlockNames.BASIL_CROP, new CroptopiaCropBlock(createCropSettings()));
        bellPepperCropBlock = registerBlock(BlockNames.BELLPEPPER_CROP, new CroptopiaCropBlock(createCropSettings()));
        blackBeanCropBlock = registerBlock(BlockNames.BLACKBEAN_CROP, new CroptopiaCropBlock(createCropSettings()));
        blackberryCropBlock = registerBlock(BlockNames.BLACKBERRY_CROP, new CroptopiaCropBlock(createCropSettings()));
        blueberryCropBlock = registerBlock(BlockNames.BLUEBERRY_CROP, new CroptopiaCropBlock(createCropSettings()));
        broccoliCropBlock = registerBlock(BlockNames.BROCCOLI_CROP, new CroptopiaCropBlock(createCropSettings()));
        cabbageCropBlock = registerBlock(BlockNames.CABBAGE_CROP, new CroptopiaCropBlock(createCropSettings()));
        cantaloupeCropBlock = registerBlock(BlockNames.CANTALOUPE_CROP,new CroptopiaCropBlock(createCropSettings()));
        cauliflowerCropBlock = registerBlock(BlockNames.CAULIFLOWER_CROP, new CroptopiaCropBlock(createCropSettings()));
        celeryCropBlock = registerBlock(BlockNames.CELERY_CROP, new CroptopiaCropBlock(createCropSettings()));
        coffeeCropBlock = registerBlock(BlockNames.COFFEE_CROP, new CroptopiaCropBlock(createCropSettings()));
        cornCropBlock = registerBlock(BlockNames.CORN_CROP, new TallCropBlock(createCropSettings()));
        cranberryCropBlock = registerBlock(BlockNames.CRANBERRY_CROP, new CroptopiaCropBlock(createCropSettings()));
        cucumberCropBlock = registerBlock(BlockNames.CUCUMBER_CROP, new CroptopiaCropBlock(createCropSettings()));
        currantCropBlock = registerBlock(BlockNames.CURRANT_CROP, new CroptopiaCropBlock(createCropSettings()));
        eggplantCropBlock = registerBlock(BlockNames.EGGPLANT_CROP, new CroptopiaCropBlock(createCropSettings()));
        elderberryCropBlock = registerBlock(BlockNames.ELDERBERRY_CROP, new CroptopiaCropBlock(createCropSettings()));
        garlicCropBlock = registerBlock(BlockNames.GARLIC_CROP, new CroptopiaCropBlock(createCropSettings()));
        gingerCropBlock = registerBlock(BlockNames.GINGER_CROP, new CroptopiaCropBlock(createCropSettings()));
        grapeCropBlock = registerBlock(BlockNames.GRAPE_CROP, new CroptopiaCropBlock(createCropSettings()));
        greenBeanCropBlock = registerBlock(BlockNames.GREENBEAN_CROP, new CroptopiaCropBlock(createCropSettings()));
        greenOnionCropBlock = registerBlock(BlockNames.GREENONION_CROP, new CroptopiaCropBlock(createCropSettings()));
        honeydewCropBlock = registerBlock(BlockNames.HONEYDEW_CROP, new CroptopiaCropBlock(createCropSettings()));
        hopsCropBlock = registerBlock(BlockNames.HOPS_CROP, new CroptopiaCropBlock(createCropSettings()));
        kaleCropBlock = registerBlock(BlockNames.KALE_CROP, new CroptopiaCropBlock(createCropSettings()));
        kiwiCropBlock = registerBlock(BlockNames.KIWI_CROP, new CroptopiaCropBlock(createCropSettings()));
        leekCropBlock = registerBlock(BlockNames.LEEK_CROP, new CroptopiaCropBlock(createCropSettings()));
        lettuceCropBlock = registerBlock(BlockNames.LETTUCE_CROP, new CroptopiaCropBlock(createCropSettings()));
        mustardCropBlock = registerBlock(BlockNames.MUSTARD_CROP, new CroptopiaCropBlock(createCropSettings()));
        oatCropBlock = registerBlock(BlockNames.OAT_CROP, new CroptopiaCropBlock(createCropSettings()));
        oliveCropBlock = registerBlock(BlockNames.OLIVE_CROP, new CroptopiaCropBlock(createCropSettings()));
        onionCropBlock = registerBlock(BlockNames.ONION_CROP, new CroptopiaCropBlock(createCropSettings()));
        peanutCropBlock = registerBlock(BlockNames.PEANUT_CROP, new CroptopiaCropBlock(createCropSettings()));
        chilePepperCropBlock = registerBlock(BlockNames.CHILE_PEPPER_CROP, new CroptopiaCropBlock(createCropSettings()));
        pineappleCropBlock = registerBlock(BlockNames.PINEAPPLE_CROP, new CroptopiaCropBlock(createCropSettings()));
        radishCropBlock = registerBlock(BlockNames.RADISH_CROP, new CroptopiaCropBlock(createCropSettings()));
        raspberryCropBlock = registerBlock(BlockNames.RASPBERRY_CROP, new CroptopiaCropBlock(createCropSettings()));
        rhubarbCropBlock = registerBlock(BlockNames.RHUBARB_CROP, new CroptopiaCropBlock(createCropSettings()));
        riceCropBlock = registerBlock(BlockNames.RICE_CROP, new CroptopiaCropBlock(createCropSettings()));
        rutabagaCropBlock = registerBlock(BlockNames.RUTABAGA_CROP, new CroptopiaCropBlock(createCropSettings()));
        saguaroCropBlock = registerBlock(BlockNames.SAGUARO_CROP, new CroptopiaCropBlock(createCropSettings()));
        soybeanCropBlock = registerBlock(BlockNames.SOYBEAN_CROP, new CroptopiaCropBlock(createCropSettings()));
        spinachCropBlock = registerBlock(BlockNames.SPINACH_CROP, new CroptopiaCropBlock(createCropSettings()));
        squashCropBlock = registerBlock(BlockNames.SQUASH_CROP, new CroptopiaCropBlock(createCropSettings()));
        strawberryCropBlock = registerBlock(BlockNames.STRAWBERRY_CROP, new CroptopiaCropBlock(createCropSettings()));
        sweetPotatoCropBlock = registerBlock(BlockNames.SWEETPOTATO_CROP, new CroptopiaCropBlock(createCropSettings()));
        tomatilloCropBlock = registerBlock(BlockNames.TOMATILLO_CROP, new CroptopiaCropBlock(createCropSettings()));
        tomatoCropBlock = registerBlock(BlockNames.TOMATO_CROP, new CroptopiaCropBlock(createCropSettings()));
        turmericCropBlock = registerBlock(BlockNames.TURMERIC_CROP, new CroptopiaCropBlock(createCropSettings()));
        turnipCropBlock = registerBlock(BlockNames.TURNIP_CROP, new CroptopiaCropBlock(createCropSettings()));
        yamCropBlock = registerBlock(BlockNames.YAM_CROP, new CroptopiaCropBlock(createCropSettings()));
        zucchiniCropBlock = registerBlock(BlockNames.ZUCCHINI_CROP, new CroptopiaCropBlock(createCropSettings()));
        vanillaCropBlock = registerBlock(BlockNames.VANILLA_CROP, new CroptopiaCropBlock(createCropSettings()));
        pepperCropBlock = registerBlock(BlockNames.PEPPER_CROP, new CroptopiaCropBlock(createCropSettings()));
        teaCropBlock = registerBlock(BlockNames.TEA_CROP, new CroptopiaCropBlock(createCropSettings()));

        appleSaplingBlock = registerBlock(BlockNames.APPLE_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.APPLE_TREE), createSaplingSettings()));
        bananaSaplingBlock = registerBlock(BlockNames.BANANA_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.BANANA_TREE), createSaplingSettings()));
        orangeSaplingBlock = registerBlock(BlockNames.ORANGE_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.ORANGE_TREE), createSaplingSettings()));
        persimmonSaplingBlock = registerBlock(BlockNames.PERSIMMON_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.PERSIMMON_TREE), createSaplingSettings()) );
        plumSaplingBlock = registerBlock(BlockNames.PLUM_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.PLUM_TREE), createSaplingSettings()));
        cherrySaplingBlock = registerBlock(BlockNames.CHERRY_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.CHERRY_TREE), createSaplingSettings()));
        lemonSaplingBlock = registerBlock(BlockNames.LEMON_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.LEMON_TREE), createSaplingSettings()));
        grapefruitSaplingBlock = registerBlock(BlockNames.GRAPEFRUIT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.GRAPEFRUIT_TREE), createSaplingSettings()));
        kumquatSaplingBlock = registerBlock(BlockNames.KUMQUAT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.KUMQUAT_TREE), createSaplingSettings()));
        peachSaplingBlock = registerBlock(BlockNames.PEACH_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.PEACH_TREE), createSaplingSettings()));
        coconutSaplingBlock = registerBlock(BlockNames.COCONUT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.COCONUT_TREE), createSaplingSettings()));
        nutmegSaplingBlock = registerBlock(BlockNames.NUTMEG_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.NUTMEG_TREE), createSaplingSettings()));
        figSaplingBlock = registerBlock(BlockNames.FIG_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.FIG_TREE), createSaplingSettings()));
        nectarineSaplingBlock = registerBlock(BlockNames.NECTARINE_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.NECTARINE_TREE), createSaplingSettings()));
        mangoSaplingBlock = registerBlock(BlockNames.MANGO_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.MANGO_TREE), createSaplingSettings()));
        dragonFruitSaplingBlock = registerBlock(BlockNames.DRAGONFRUIT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.DRAGON_FRUIT_TREE), createSaplingSettings()));
        starFruitSaplingBlock = registerBlock(BlockNames.STARFRUIT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.STAR_FRUIT_TREE), createSaplingSettings()));
        avocadoSaplingBlock = registerBlock(BlockNames.AVOCADO_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.AVOCADO_TREE), createSaplingSettings()));
        apricotSaplingBlock = registerBlock(BlockNames.APRICOT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.APRICOT_TREE), createSaplingSettings()));
        pearSaplingBlock = registerBlock(BlockNames.PEAR_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.PEAR_TREE), createSaplingSettings()));
        limeSaplingBlock = registerBlock(BlockNames.LIME_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.LIME_TREE), createSaplingSettings()));
        dateSaplingBlock = registerBlock(BlockNames.DATE_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.DATE_TREE), createSaplingSettings()));
        almondSaplingBlock = registerBlock(BlockNames.ALMOND_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.ALMOND_TREE), createSaplingSettings()));
        cashewSaplingBlock = registerBlock(BlockNames.CASHEW_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.CASHEW_TREE), createSaplingSettings()));
        pecanSaplingBlock = registerBlock(BlockNames.PECAN_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.PECAN_TREE), createSaplingSettings()));
        walnutSaplingBlock = registerBlock(BlockNames.WALNUT_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.WALNUT_TREE), createSaplingSettings()));
        cinnamonSaplingBlock = registerBlock(BlockNames.CINNAMON_SAPLING, new CroptopiaSaplingBlock(new CroptopiaSaplingGenerator(() -> GeneratorRegistry.CINNAMON_TREE), createSaplingSettings()));

    }
}
